from sqlalchemy import create_engine,Column,Integer,String
from sqlalchemy.orm import declarative_base

# 数据库的变量
HOST = '127.0.0.1'
PORT = 3306
DATA_BASE = 'flask_db'
USER = 'root'
PWD = 'zxydsg123'
DB_URI = f'mysql+pymysql://{USER}:{PWD}@{HOST}:{PORT}/{DATA_BASE}'

# 创建 链接引擎
engine = create_engine(DB_URI)

# 创建 映射表的 基类
Base = declarative_base()

class User(Base):
    """用户"""

    # 表名
    __tablename__ = 't_user'
    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(32))
    age = Column(Integer)
    gender = Column(String(2))
    city = Column(String(32))

Base.metadata.create_all(engine)
'''
- revision：创建一个新的版本文件

    -autogenerate：自动将当前模型的修改，生成迁移脚本

    -m：本次迁移做了哪些修改，用户可以指定这个参数，方便回顾

- upgrade：将指定版本的迁移文件映射到数据库中，会执行版本文件中的upgrade函数

         如果有多个迁移脚本没有被映射到数据库中，那么会执行多个迁移脚本

    - [head]：代表最新的迁移脚本的版本号

- downgrade：会执行指定版本的迁移文件中的downgrade函数

- heads：展示head指向的脚本文件版本号

- history：列出所有的迁移版本及其信息

- current：展示当前数据库中的版本号
'''


# FAILED: Target database is not up to date.
# alembic upgrade head


# KeyError: 'da3a8bee2343' # 版本号